home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 2 / AACD 2.iso / AACD / Online / Socks5 / src / server / udputil.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-03-10  |  3.3 KB  |  104 lines

  1. /* Copyright (c) 1995-1999 NEC USA, Inc.  All rights reserved.               */
  2. /*                                                                           */
  3. /* The redistribution, use and modification in source or binary forms of     */
  4. /* this software is subject to the conditions set forth in the copyright     */
  5. /* document ("Copyright") included with this distribution.                   */
  6.  
  7. /*
  8.  * $Id: udputil.h,v 1.22.4.3 1999/02/23 16:41:44 wlu Exp $
  9.  */
  10.  
  11. /* This file contains all the prototypes for the udp utility functions       */
  12. #ifndef UDPUTIL_H
  13. #define UDPUTIL_H
  14.  
  15. #include "socks5api.h"
  16. #include "sident.h"
  17.  
  18. /* socks cache -- which addresses are those of socks servers? (for recvfrom) */
  19. /* Also, need to know if this guy is probly still alive or not...XXX not?    */
  20. struct scache {
  21.     S5NetAddr tcpsin; /* the server's tcp address, where we connected...     */
  22.     S5NetAddr udpsin; /* the server's udp address, where we sendto...        */
  23.     S5IOInfo cinfo;   /* connection info for this server.                    */
  24.     char name[S5_HOSTNAME_SIZE];
  25.     u_char reserved;
  26.     char idtentry[IDTENTRY_SIZE];
  27.     struct scache *next;
  28. };
  29.  
  30. typedef struct scache UdpSocksCache;
  31.  
  32. /* authentication cache -- have I sent a message to you before?  If not I    */
  33. /* won't be allowing this message to be recv'd from you.                     */
  34. struct acache {
  35.     S5NetAddr addr; /* remote server's address...                            */
  36.     char name[S5_HOSTNAME_SIZE];  /* remote server's name...                 */
  37.     S5NetAddr baddr; /* last socks5 server's outbound address              */
  38.     int bounded; /* address in bndAddr is valid                              */
  39.     struct acache *next;
  40. };
  41.  
  42. typedef struct acache UdpAuthCache;
  43.  
  44. /* route cacche...what socket to write out on (dest)                         */
  45. struct aroute {
  46.     S5NetAddr raddr;      /* The address of the interface...                 */
  47.     S5IOHandle sd;      /* The socket to use...                            */
  48.   
  49.     struct aroute *next;
  50. };
  51.  
  52. typedef struct aroute UdpRouteCache;
  53.  
  54. struct hinfo {
  55.     char name[MAXHOSTNAMELEN];
  56.     struct in_addr addr;
  57.     struct hinfo *next;
  58. };
  59.  
  60. typedef struct hinfo UdpHostCache;
  61.  
  62. struct sdring {
  63.     S5IOHandle sd;
  64.     struct sdring *next;
  65. };
  66.  
  67. typedef struct sdring UdpSdRing;
  68.  
  69. struct udpinfo {
  70.     S5IOInfo iio, *oiop;
  71.     
  72.     UdpSocksCache *scache;
  73.     UdpAuthCache  *acache;
  74.     UdpRouteCache *rcache;
  75.     UdpHostCache  *hcache;
  76.     
  77.     UdpSocksCache *curs;
  78.     UdpAuthCache  *cura;
  79.     UdpRouteCache *curr;
  80.  
  81.     UdpSdRing     *sdring;
  82.  
  83.     char mbuf[UDP_MAX_PAYLOAD + MAXHDRSIZE], *obuf;
  84.     int obuflen;
  85.  
  86.     S5IOHandle maxfd, relay;
  87.     fd_set myfds;
  88. };
  89.  
  90. typedef struct udpinfo UdpInfo;
  91.  
  92.  
  93. S5IOHandle MakeOutSocket   P((UdpInfo *, S5NetAddr *, u_short));
  94. S5IOHandle FindOutSocket   P((UdpInfo *, S5LinkInfo *, const S5NetAddr *, const char *));
  95.  
  96. int        FindProxyEntry  P((UdpInfo *, S5LinkInfo *, S5NetAddr *, int));
  97. int        CheckIfAllowed  P((UdpInfo *, S5LinkInfo *));        /* See if host is allowed; cache  */
  98. int        CheckIfCached   P((UdpInfo *, S5LinkInfo *, int));   /* Check cache to see if allowed  */
  99.  
  100. int        WasResolved     P((UdpInfo *, S5NetAddr *, char *)); /* See if dst was resolved here.  */
  101. void       MarkResolved    P((UdpInfo *, S5NetAddr *, char *)); /* Mark dst was resolved here.    */
  102.  
  103. #endif 
  104.